import isType from './detectionType'//检测数据类型
import proxy from './proxy'//数据代理
import observer from './observer'//观察数据劫持
//初始data化数据
function initData(vm) {
    //data为function时执行它赋值
    if (isType(vm.$option.data) == 'Function') {
        //类型断言
        vm.data = (vm.$option.data as Function)();
    } else if (isType(vm.$option.data) == 'Object') {
        //为Object时直接赋值
        vm.data = vm.$option.data
    } else {
        //为其他类型时赋值空对象
        vm.data = {};
    };
    for (let key in vm.data) {
        //vm.data[key]===>vm[key] 做一层代理
        proxy(vm, 'data', key);
    }
    //观察data内部数据响应式
    observer(vm.data);
}

export default function (vm) {
    initData(vm)
}